package com.func.trigger.api;

import com.func.trigger.api.dto.*;
import com.func.types.model.Response;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * IRaffleActivityService
 * </p>
 *
 * @author Simon
 * @version 2025.03.16.1.0.0
 * @description 活动抽奖接口
 * @since 2025-03-16
 */

public interface IRaffleActivityService {
    /**
     * 活动装配, 数据预热缓存
     * @param activityId 活动ID
     * @return 装配结果
     */
    Response<Boolean> armory(Long activityId);

    /**
     * 活动抽奖接口
     * @param request 请求对象
     * @return 返回结果
     */
    Response<ActivityDrawResponseDTO> draw(ActivityDrawRequestDTO request);

    /**
     * 签到返利结果
     * @param userId 用户ID
     * @return 签到结果
     */
    Response<Boolean> calendarSignRebate(String userId);

    /**
     * 判断是否完成日历签到返利接口
     * @param userId 用户ID
     * @return true : 已签到, false : 未签到
     */
    Response<Boolean> isCalendarSignRebate(String userId);

    /**
     * 查询用户活动账户
     * @param request 请求对象 [活动ID, 用户ID]
     * @return 返回结果 [总额度, 月额度, 日额度]
     */
    Response<UserActivityAccountResponseDTO> queryUserActivityAccount(UserActivityAccountRequestDTO request);

    /**
     * 查询所有的商品
     * @param activityId 活动Id
     * @return sku商品列表
     */
    Response<List<SkuProductResponseDTO>> querySkuProductListByActivityId(Long activityId);

    /**
     * 查询用户的积分账户的积分值
     * @param userId 用户ID
     * @return 用户积分值
     */
    Response<BigDecimal> queryUserCreditAccount(String userId);

    /**
     * 积分兑换商品
     * @param request 用户ID, skuID
     * @return 是否兑换成功
     */
    Response<Boolean> creditPayExchangeSku(SkuProductShopCartRequestDTO request);
}